// 频道相关请求
import store from '@/store'
import request from '@/utils/request'

// 获取所有频道
export const getAllChannels = () => {
  return request({ url: '/v1_0/channels' })
}

// 获取我的频道（未登录会返回默认的一些频道）
// 使用本地存储获取我的频道
export const getMyChannelsAPI = async () => {
  const token = store.state.user.token
  if (!token) {
    // 没有登录 获取本地存储
    const localDate = JSON.parse(localStorage.getItem('KEY') || '[]')
    if (localDate.length) {
      // 如果有本地存储有数据, 返回本地存储数据
      return localDate
    } else {
      // 本地存储没有数据, 发请求 获取数据 存储到本地缓存
      const [, res] = await request({ url: '/v1_0/user/channels' })
      localStorage.setItem('KEY', JSON.stringify(res.data.data.channels))
      return res.data.data.channels
    }
  } else {
    // 发请求 返回数据
    const [, res] = await request({ url: '/v1_0/user/channels' })
    return res.data.data.channels
  }
}

// 添加频道
export const addChannelAPI = myChannels => {
  // 判断用户是否登录
  if (!store.state.user.token) {
    // 用户没有登录
    //  1. 获取本地存储
    const localDate = JSON.parse(localStorage.getItem('KEY') || '[]')
    console.log(localDate)
    //  2. 最后一项就是需要更新的
    const { id, name } = myChannels[myChannels.length - 1]
    //  3. 追加新频道
    localDate.push({ id, name })
    //  4. 存储本地
    localStorage.setItem('KEY', JSON.stringify(localDate))
  } else {
    // 用户已登录 发请求
    return request({
      url: '/v1_0/user/channels',
      method: 'PUT',
      data: {
        channels: myChannels
      }
    })
  }
}
